On Tuesday, October 27, 2015 at 4:11:53 PM UTC-7, Jeremy Swartwood wrote:
>
> Since changing the database of a model object at runtime is not 
> recommended.  What is the best way to create a read_only and writable 
> connection, that should be used by models?  
>
> I tried to use sharding, and ran into some errors changing the connection 
> for the model.
>
>
> 1. How would I perform a Model.create using the "write" connection?
>
> *1.a. [.set_server]*
>
> *Model.set_server.create:*
> NoMethodError:
>        undefined method `set_server' for Models::Enrollees:Class
>
>
> *Model.create.set_server: *(It appears the .set_server does not apply 
> because it is called afterwards)
> Sequel::DatabaseError:
>        Mysql::Error: INSERT command denied to user 'readonly'@'localhost' 
> for table 'enrollee'
>
>
>
> *1.b. [.server]*
>
> *Using Model.server.create:* (somehow it thinks the model is a dataset?)
>
>
> tmp_ba = Models::Enrollees.server(:write_access).create(params)
>
>  
>
> *NoMethodError:*
> *       undefined method `create' for 
> #<Sequel::MySQL::Dataset:0x007ff4a158e0b0>*
>
>
>
> *Using Model.create.server: *(It appears the .server does not apply 
> because it is called afterwards)
> Sequel::DatabaseError:
>        Mysql::Error: INSERT command denied to user 'readonly'@'localhost' 
> for table 'enrollee'
>
>
>
> 2. How do I do a Model.save? (Looks like I have to use 
> model.set_server(:write_access).save)
>
> I was able to get this to work by doing 
> Model_instance.set_server(:write_access).save
>

Sequel has built in support for a :read_only shard, which read-only queries 
are sent to by default: 
http://sequel.jeremyevans.net/rdoc/files/doc/sharding_rdoc.html

So assuming you use the correct :servers option when setting up your 
database connection, things should just work automatically.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to