【发布时间】:2015-06-12 18:49:31
【问题描述】:
我有一个租赁模型:
class Lease < Sequel::Model
def before_create
self.issued_date = DateTime.now
self.return_date = DateTime.now + 2.weeks
super
end
end
用户模型:
class User < Sequel::Model
many_to_many :items, left_key: :user_id, right_key: :item_id,
join_table: :leases
end
和物品型号:
class Item < Sequel::Model
many_to_many :users, left_key: :item_id, right_key: :user_id,
join_table: :leases
end
我的租赁模型有 user_id 和 item_id 作为外键。
当我创建一个 Lease 对象时,issued_date 和 return_date 被创建并保存在数据库中,但是,当我为一个用户分配一个项目时,一个租约对象被创建但 before_create 没有被调用,导致issued_date 和 return_date 设置为零。
【问题讨论】:
-
您能否再描述一下,您如何将
user_id和item_id分配给lease模型? -
什么是
many_to_many?你的意思是has_and_belongs_to_many?或者这是来自某种 gem,还是你自己的代码? -
我正在使用 Sequel。 github.com/jeremyevans/sequel@nathanvda
-
啊,对:我应该看到了 :) 我知道
has_and_belongs_to_many的连接模型是隐式的,因此内部的任何代码(如果已定义)都会被忽略。当您在 ActiveRecord 中使用显式连接模型(使用has_many :through)时,它确实有效。您正在使用显式连接模型,所以我想这是续集中的疏忽/错误/功能?我希望有人能提供更好的帮助。
标签: ruby-on-rails ruby sequel