0

如何创建一个 user_id 列以将一个数据库索引的 id 映射到另一个?

我知道 has_many 和 belongs_to,但我不确定在创建模型时是否需要指定 user_id ...

rails g model User name:string email:string

rails g model Card inputA:string inputB:string——我要加user_id:integer吗?

然后添加has_many :cards, 和belongs_to :user?

has_many或者当您起诉时,rails 会自动执行此操作吗?belongs_to

4

3 回答 3

2

您添加user_id:integer,因为迁移需要独立于模型的信息。

你提出的建议是正确的。

于 2012-02-17T11:31:34.500 回答
0

Isotope 说的是需要在现有模型 Card 中添加一列。在 Rails 中有一种简单的方法可以做到这一点,只需生成一个迁移,使用以下命令将一列添加到您的模型中:

rails generate migration add_UserID_to_cards userID:integer

迁移文件将如下所示:

class AddUserIDToCard < ActiveRecord::Migration
  def self.up
    add_column :cards, :userID, :integer
  end

  def self.down
    remove_column :cards, :userID
  end
end

但是......通常每个用户在您的数据库中已经有一个唯一的 ID,所以我认为没有必要这样做。相反,如果您从用户构建您的卡片,链接将自动完成。即,在您的卡片控制器的 create 方法中:

@card = current_user.cards.build(params[:card])

这是一个完整的主题,我建议从那里开始:http ://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html 否则,Hartl 教程“Rails 3 教程”提供了一个完整的例子在本书的最后几章中(当它将微博链接到用户时)。

我希望这有帮助 !

于 2012-02-17T12:46:43.333 回答
0
@card = current_user.cards.build(params[:card]) 

非常适合我。我遇到了我的 user_id 没有被自动索引的问题。

于 2013-08-13T11:49:07.353 回答