我是第一次创建活动记录关联,想了解添加它们后会发生什么。我正在使用导轨 3.2.14
我有 3 个表用户、应用程序和工作
1] 在应用程序表中,我添加了 User_Id 和 Job_id 作为外键列,因为应用程序属于用户和作业。
2] 我还添加了必要的关联。
3] 添加外键列和关联后,运行 rake db:migrate 是否足够或者我必须做其他任何事情来完成关系建模?
一些背景
现在,当我在单击作业链接后创建一个新应用程序时,我希望 job_id 和 user_id 将由框架在 Application:create 执行它的方法中自动填充
Application.new(params[:application])
但是,框架似乎没有填充 foreign_key 列,我必须在 create 方法中手动提取相关的 job_id 和 user_id 并将其填充到应用程序中。
不添加关联的一个优点是,如果我后来意识到某些关系是 has_and_belong_to_many 而不是 has_many,我可以在表中处理它,因为此时没有关联被“冻结”。
我有以下问题:
1]在模型中定义关联有什么好处。我可以只添加外键列并处理它们而不将它们关联到模型中。
2]通过在模型中添加关联,我应该期待什么其他事情(最终会让我的生活更轻松)?
以下是模型:
Models:
class User < ActiveRecord::Base
rolify
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :role_ids, :as => :admin
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :user_id
validates_presence_of :email
end
class Job < ActiveRecord::Base
attr_accessible :company, :desc, :location, :application_id, :applicant_id
belongs_to :recruiters, :class_name => "User"
has_many :applications
has_many :applicants,:class_name => "User", through: :applications
end
class Application < ActiveRecord::Base
attr_accessible :applicant_email, :applicant_name, :recruiter_id, :applicant_id, :user_id
belongs_to :jobs
belongs_to :applicants, :class_name => "User"
end
注意 随时在评论部分提供视频、博客的链接,这些内容以简单的方式进行了解释。我没有找到有助于理解所有步骤的官方文档http://guides.rubyonrails.org/association_basics.html并且我找不到相关的 rails-cast