module LunaPark::Extensions::Dsl::ForeignKey
@example
class Transaction # ... include LunaPark::Extensions::Dsl::ForeignKey foreign_key :user_uid, :user, primary_key: :uid # `primary_key:` default is `:id` # foreign_key points to primary_key # OR alias: fk :user_uid, :user, pk: :uid # ... end t = Transaction.new t1.user # => nil t1.user_uid # => nil t1.user = User.new(uid: 42) t1.user # => #<User uid=42> t1.user_uid # => 42 (changed) t1.user # => #<User uid=42> t1.user = nil t1.user_uid # => nil (removed) t1.user # => #<User uid=42> t1.user_uid = nil t1.user # => nil (removed) t1.user # => #<User uid=42> t1.user = User.new(uid: 666) t1.user_uid # => 666 (changed) t1.user # => #<User uid=42> t1.user_uid = 666 t1.user # => nil (removed cause uid missmatch)
Public Class Methods
extended(base)
click to toggle source
# File lib/luna_park/extensions/dsl/foreign_key.rb, line 47 def self.extended(base) base.extend ClassMethods base.include InstanceMethods end