Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- create_table "accounts", :force => true do |t|
- t.integer "user_id"
- t.string "data_key"
- t.string "data_value"
- end
- belongs_to :user
- DATA_KEYS = ['age', 'birthdate', 'hair_color', 'height' ] # etc..
- has_many :accounts
- Account::DATA_KEYS.each do |method|
- # getter method
- define_method(method) do
- accounts.find_by_data_key(method).try(:data_value)
- end
- # setter method
- define_method("#{method}=") do |value|
- data = accounts.find_or_initialize_by_data_key(method)
- data.data_value = value.strip
- data.save
- end
- end
- user = User.new
- user.preferences = {
- email: "p@elh.mx",
- github: "heridev"
- }
- user.save!
- user.reload
- # Searching
- User.where("preferences @> hstore(:key, :value)", key: "email", value: "p@elh.mx").first
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement