gpt4 book ai didi

ruby-on-rails - 将属性值添加到 has_many 中的连接表记录 :through association upon creation

转载 作者:数据小太阳 更新时间:2023-10-29 08:21:04 26 4
gpt4 key购买 nike

我正在我的 Rails 3.2 应用程序上设置一个 has_many :through 关系。除了我不确定如何在创建关系时将值添加到连接表上的属性之外,我几乎所有的东西都在工作。

以下是模型(注意 Checkins 表中的 source_id):

create_table "users", :force => true do |t|
t.integer "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

create_table "checkins", :force => true do |t|
t.integer "user_id"
t.integer "location_id"
t.integer "source_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

create_table "locations", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

这是关系设置:

class User < ActiveRecord::Base
has_many :checkins
has_many :locations, :through => :checkins
end

class Location < ActiveRecord::Base
has_many :checkins
has_many :users, :through => :checkins
end

class Checkin < ActiveRecord::Base
belongs_to :location
belongs_to :user
end

我正在使用这些说明(本质上)来加载用户和位置并创建与 checkin 的关系:

source_id = 10
@user = User.first
@location = Location.first
@user.locations << @location

所以,我的问题是,如何在使用此行时将 source_id 值添加到 Checkins 表:

@user.locations << @location

我也乐于接受关于使用这种关系创建新用户签到的更好流程的建议,而不是我上面的(我已经看到了创建构建使用的方法,但似乎没有一个对我有用)

最佳答案

直接创建一个Checkin对象。

checkin = Checkin.new user: @user, location: @location, source_id: source_id 
checkin.save

关于ruby-on-rails - 将属性值添加到 has_many 中的连接表记录 :through association upon creation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9860966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com