0

我已经重读了协会的 Rails 指南,但仍然把我的头撞到墙上。我在 Stack Overflow 上看到了一些高级问题,但无法确定它们是否能阐明我的问题。也许我还没有把我的思想包裹在这件事上。请告诉我我没有看到什么。

我有一个 School.rb,其中 has_many Events,has_many Venues。每个活动和场地都属于_to School。我正在尝试将场地与活动联系起来。它们与学校相关联,因为它们具有匹配的 school_id。正如预期的那样,学校的名称很容易在 Event#show 和 Venue#show 中应用。诀窍是如何制作 Event 控制器以使用 school_id 在 Event#show 页面中拉取 Venue 的 addy?

我的尝试不断丢失,所以我开始思考也许我必须让 Event belongs_to Venue 和 Venue has_many Events。这是正确的做法吗?

我尝试 <%= @event.venue.address %> 失败,因为 nil:NilClass 的“未定义方法‘地址’

也许我想多了,但正如我上面提到的,我知道的不够多,无法提出正确的问题。如果我用英语进行查询,它将是“获取其 school_id 与当前/活动事件的 school_id 匹配的 Venue 实例。” 那有意义吗?我试图在rails guide中找到接近的东西并尝试了这个:

 @venues = Venue.where(:school_id => @school_id)

[]:ActiveRecord::Relation 的未定义方法“地址”。场地地址在场地模型中。

这是我的school.rb:

 class School < ActiveRecord::Base

  has_many :events, :dependent => :destroy   
 has_many :venues, :dependent => :destroy
 has_and_belongs_to_many :users
  belongs_to :event   belongs_to :venue
  def self.fetch_for_name(_name)
 school = self.new(:name => _name)
  end 
 end

这是我的 event.rb:

class Event < ActiveRecord::Base

resourcify
belongs_to :school
 belongs_to :venue
 end

这是我的 Venue.rb:

 class Venue < ActiveRecord::Base

  resourcify
  belongs_to :school
   has_many :events

   end

请帮我克服这一步,山姆

4

2 回答 2

0

您需要查看指南的这一 部分,并确保您有 has_many through 地点和事件之间的关系,如链接中所述...

于 2012-07-05T19:24:23.630 回答
0

要执行您所要求的确切操作,您将在 Venue 中创建一个方法来查询给定事件。

class Venue < ActiveRecord::Base
  resourcify
  belongs_to :school
  has_many :events
  def self.venue_for_event(event)
    where("school_id = ?", event.school_id)
  end
end

但是,有一些关于您的模型的问题要问。为什么一所学校有很多活动和场地,却又属于一个活动和场地?你想用这些模型解决什么问题?如果学校是把场地和活动联系在一起的粘合剂,那就考虑把它变成has_many, :through关系中的连接模型

于 2012-07-05T19:49:33.820 回答