Module: LunaPark::Extensions::Dsl::ForeignKey

Defined in:
lib/luna_park/extensions/dsl/foreign_key.rb

Overview

Examples:

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)

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Class Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



47
48
49
50
# File 'lib/luna_park/extensions/dsl/foreign_key.rb', line 47

def self.extended(base)
  base.extend  ClassMethods
  base.include InstanceMethods
end