Ruby on rails:使用belongs_to关联创建模型条目

use*_*382 12 ruby ruby-on-rails associations ruby-on-rails-3

我正在尝试在我的数据库中为具有belongs_to关系的模型添加新条目.我有两个模型,乔布斯和客户.

很容易找到关于如何在这两者之间建立关联的教程(使用has_many和belongs_to),但我似乎找不到实际使用关联的任何示例.

在我的代码中,我正在尝试为第一个客户创建一个新工作.作业模型有一个client_id的属性,我知道我可能只是手动填充属性,但必须有一些ruby约定来轻松实现这一点.

Job.create(:client_id => 1, :subject => "Test", :description => "This is a test")
Run Code Online (Sandbox Code Playgroud)

我可以轻松地将它放在我的代码中,但我觉得ruby有更好的方法来做到这一点.这是我的模型设置方式

class Job < ActiveRecord::Base
  attr_accessible :actual_time, :assigned_at, :client_id, :completed_at, :estimated_time, :location, :responded_at, :runner_id, :status, :subject, :description
  belongs_to :client
end

class Client < User
    has_many :jobs
end

class User < ActiveRecord::Base
  attr_accessible :name, :cell, :email, :pref

end
Run Code Online (Sandbox Code Playgroud)

alf*_*alf 16

只需调用客户端createjobs集合:

c = Client.find(1)
c.jobs.create(:subject => "Test", :description => "This is a test")
Run Code Online (Sandbox Code Playgroud)

  • @MrYoshiji提出异常通常是预期的行为,因为在rails`RikeNotFound`异常被转换为异常应用程序中的404请求. (3认同)

MrY*_*iji 5

您可以将对象作为参数传递以创建作业:

client = Client.create
job = Job.create(client_id: client.id, subject: 'Test', description: 'blabla')
Run Code Online (Sandbox Code Playgroud)

create如果对象无法保存,则该方法将引发错误(如果您设置了强制名称等验证)。