我有一个名为Period
的模型,它有一个名为start_date
的列。我也有一个名为Announcement
的模型,它属于Period
和Period
has_many到Announcements
。创建公告并将其与周对象关联,如果其中一个不存在
当我创建一个Announcement
我想将它关联到Period
,但我首先要检查是否Period
记录存在的announcements
created_at
日期匹配。如果Period
记录确实存在,只需将period_id
添加到Announcement
即可。
如果没有,则创建Period
记录并将其ID
添加到announcement
。
这里是我的代码为我的两个模型到目前为止
期模型:
class Period < ActiveRecord::Base
has_many :announcements
def self.find_or_create(date)
start_date = date.beginning_of_week
where(start_date: start_date).first || create_through_related(date)
end
def self.create_from_related(date)
start_date = date.beginning_of_week
create! do |period|
period.start_date = date.start_date
period.duration = 7
end
end
end
公告方式:
过滤器之前class Announcement < ActiveRecord::Base
belongs_to :period
end
有一点要澄清 - 在哪一点你希望他的联系发生。储存通告后? – BroiSatse
理想情况下,我希望将该通知与week_id一起保存。所以我猜猜发现或创建一周的逻辑需要发生之前。 但是,我需要公告中的'created_at'日期来计算一个星期是否存在。 这有点鸡或鸡蛋 –