所以我在我的佣金任务中有这个
Event.find_or_create_by(time: row[9], date: row[10], event_type: word1, eventimage: row[4], eventname: eventname, eventvenuename: location, event: eventname, eventlink1: eventlink1, eventlink2: eventlink2)
现在,我有这个加载格式csv,目前,有时候会填充事件,一周后会有一个eventlink2可用于同一个链接。
如果事件已经创建,我怎样才能填充eventlink2? (目前无效)
萨姆
答案 0 :(得分:0)
试试这个:
Model.where(thing_to_look_up_by: x).first_or_create(another_thing: y, more_attributes: z)
如果它没有找到它将在创建中使用它的位置。
答案 1 :(得分:0)
为此,我会使用:find_or_initialize_by。作为params,它需要你想要找到的任何属性。下面我的例子通过eventlink1属性找到。确保您找到的任何属性在所有事件中都是唯一的。
event = Event.find_or_initialize_by(eventlink1: link_1) do |e|
e.time = row[9],
e.date = row[10],
e.event_type = word1,
e.eventimage = row[4],
e.eventname = eventname,
e.eventvenuename = location,
e.eventlink2 = eventlink2
end
event.save!
我还注意到在上面的参数中你有一个:event属性分配给eventname变量。希望这是一个错字,事件模型不应该有'event'属性。此外,(在您的上述参数中)'event'和'eventname'属性都设置为相同的变量(eventname)。这是错误的(无论'event'属性是否真的存在或被错误地包含在另一个属性中。没有理由有两个列(event,eventname)只存储事件的名称。