如何 link/add 互相建模
How to link/add models to each other
我正在尝试将 idea(s)
添加到 user
。到目前为止,我将 has_many
添加到我的用户中,并将 belongs_to
添加到我的想法中。我使用以下方式向用户添加了一个外键:
rails g migration Add_User_id_To_Ideas user_id:integer
现在,当用户创建新创意时,如何将创意分配给特定用户?
我尝试与 this example 并行工作,但我有点卡住了。
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :ideas
end
idea.rb
class Idea < ActiveRecord::Base
belongs_to :user
has_many :comments
mount_uploader :picture, PictureUploader
# {attr_accessor :Status}
enum status: [ :Draft, :Published]
end
有几种方法可以做到这一点,但我认为最直接的方法是将 user_id 保存在想法控制器创建操作中。
# def create inside ideas_controller
@idea.user_id = current_user.id
if @idea.save
# etc
其他几个选项是隐藏字段或 before_save 回调。这是一个通过隐藏字段的示例。在你的@idea 表格中:
<%= f.hidden_field :user_id, value: current_user.id %>
这会将 user_id 添加到正在保存的参数中。确保 :user_id 在您的想法控制器底部的允许参数中列入白名单。
允许 user_id
在 idea_params
:
def idea_params
params.require(:idea).permit(:user_id, :also_add_other_params)
end
我正在尝试将 idea(s)
添加到 user
。到目前为止,我将 has_many
添加到我的用户中,并将 belongs_to
添加到我的想法中。我使用以下方式向用户添加了一个外键:
rails g migration Add_User_id_To_Ideas user_id:integer
现在,当用户创建新创意时,如何将创意分配给特定用户? 我尝试与 this example 并行工作,但我有点卡住了。
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :ideas
end
idea.rb
class Idea < ActiveRecord::Base
belongs_to :user
has_many :comments
mount_uploader :picture, PictureUploader
# {attr_accessor :Status}
enum status: [ :Draft, :Published]
end
有几种方法可以做到这一点,但我认为最直接的方法是将 user_id 保存在想法控制器创建操作中。
# def create inside ideas_controller
@idea.user_id = current_user.id
if @idea.save
# etc
其他几个选项是隐藏字段或 before_save 回调。这是一个通过隐藏字段的示例。在你的@idea 表格中:
<%= f.hidden_field :user_id, value: current_user.id %>
这会将 user_id 添加到正在保存的参数中。确保 :user_id 在您的想法控制器底部的允许参数中列入白名单。
允许 user_id
在 idea_params
:
def idea_params
params.require(:idea).permit(:user_id, :also_add_other_params)
end