Comments (2)
Maybe it's helpful for anyone landing here through a web search or so: We solved this by creating a custom adapter which applies the desired permissions after each update_view
.
module Scenic
module Adapters
class PostgresWithPermissionReapplication < Scenic::Adapters::Postgres
def update_view(name, sql_definition)
super
@connectable.connection.execute <<-SQL.squish
GRANT SELECT ON TABLE #{quote_table_name(name)} TO role
SQL
end
end
end
end
Scenic.configure do |config|
config.database = Scenic::Adapters::PostgresWithPermissionReapplication.new
end
from scenic.
We already have a pattern for something similar with indexes on materialized views but I'm not sure we should extend it for this use case which seems unlikely to be common.
I'd encourage you to look at how Index Reapplication works to see how you might do permission re-application -- perhaps as an extension to scenic you could use.
I'm not terribly incliuned to support this inside Scenic at the moment, but I could be swayed by some combination of:
- A number of people that need this functionality
- An implementation that is easily understood
- An argument convincing me this isn't a slippery slop towards supporting just about anything someone can associate with a view (if we support indexes and permissions, is there going to be something else after that?)
I'm going to close this for now given that I'm not convinced we should add and maintain this, but could revisit
from scenic.
Related Issues (20)
- Getting "Invalid single-table inheritance type" error when using a model based on a view HOT 2
- Sequences HOT 1
- Materialization is dumped to structure.rb incorrectly HOT 2
- Is it possible to make it work with Sinatra or any other Rack app? HOT 2
- schema.rb diff after running migrations HOT 2
- How to persist `'now'::timestamp` / prevent being computed with `rails db:migrate` HOT 3
- ERB.new warnings despite #360 HOT 2
- add a support for pg_ivm ? HOT 1
- Centralise and expose configurable db views folder HOT 5
- make update_view for materialized views create less downtime HOT 1
- Add support for a cache_key and/or cache_version HOT 1
- Ignore scripts outside `db/views` folder HOT 1
- Cannot replace materialized views HOT 2
- Old migration name affecting new view name HOT 10
- cannot rollback drop_view HOT 3
- Multiple databases, main DB is assumed even though it's specified in the model. Is there a better way? HOT 1
- Feature Request: Support Generated Columns HOT 1
- Support Rails' multiple database feature HOT 1
- Default to latest view definition for create_view HOT 1
- Cutting new release? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scenic.