I got real late to see this reply. Once I find some space during the project to look into this, I'll consider moving to PostgreSQL JSON columns. I could coincide with you in that AR::Store is not a good idea if you have PSQL underneath, but for the cases when you don't, having it seems like a good workaround.
Thanks for your answer. I'll let you know if I get to a better solution. On Monday, September 22, 2014 5:56:31 PM UTC-3, Jeremy Evans wrote: > > On Monday, September 22, 2014 1:49:04 PM UTC-7, Jeremy Evans wrote: >> >> Sequel doesn't currently have a plugin for ActiveRecord::Store like >> functionality. Personally, I think it's just a bad idea. If you are using >> PostgreSQL, my recommendation would be to use a native json column with >> Sequel's pg_json extension, and instead of using attr_accessor, just add >> instance methods that get/set the value in the json hash: >> > > I should point out that if you aren't using PostgreSQL, you can use the > serialization plugin as you are doing currently, and the code below will > work. Basically, your issue is you are keeping track of the data in two > separate places (instance variables and the deserialized json hash), > instead of a single place. If you just keep track of it in a single place, > as the code below does, you are fine, assuming you aren't actually > modifying attr1 or attr2 during the call to save. > > Thanks, > Jeremy > > >> >> class Example < Sequel::Model >> def attr1 >> data['attr1'] >> end >> >> def attr1=(v) >> modified!(:data) >> data['attr1'] = v >> end >> >> def attr2 >> data['attr2'] >> end >> >> def attr2=(v) >> modified!(:data) >> data['attr2'] = v >> end >> >> def validate >> validates_presence [:attr1, :attr2] >> end >> end >> > -- 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.
