0

我是第一次创建活动记录关联,想了解添加它们后会发生什么。我正在使用导轨 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

4

1 回答 1

0

1)因为它们使您的代码中的常见操作更简单、更容易。它本质上是 Active Record 模式。为什么要自己编写代码来处理这些东西,例如查询等,因为它已经内置了。它显着减少了代码并使您的查询更容易阅读。2)这太宽泛了,无法回答,所以我不会。

于 2013-08-22T19:49:44.947 回答