2012-07-05 91 views
0

我已经重读了关联指南,但还是碰到了墙头。我已经看到了Stack Overflow的一些高级问题,我无法确定它是否揭示了我的问题。也许我一直没有想到这件事。请告诉我我没有看到什么。Rails 3.2基本关系has_many

我有一个School.rb has_many事件,has_many场地。每个活动和场地都属于学校。我正试图将场地与事件联系起来。他们与学校有关,因为他们有一个匹配的school_id。学校的名字很容易应用在Event#show和Venue#show中。诀窍是我如何制作Event控件以使用school_id在Event#show页面中拉取Venue的addy?

我的企图不断,所以我想到也许我必须让事件belongs_to场地和场地has_many事件。这是正确的做法吗?

我试图<%= @ event.venue.address%>,但失败与“未定义的方法'地址”的零:NilClass'

也许我也得太多,但正如我前面提到,我不不足以提出正确的问题。如果我用英语来表达我的疑问,那么应该是“抓住school_id匹配当前/活动事件的school_id的Venue实例。”那有意义吗?我试图找到一些接近,在轨指南和尝试这样的:

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

未定义的方法'地址为[]的ActiveRecord ::关系。场地地址在场地模型中。

这里是我的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 

请帮我渡过这个宝贝step,sam

+0

您可以发布您的实际活动记录关系吗?它会让所有的事情变得更容易 – DVG 2012-07-05 19:32:26

+0

我编辑了我的答案,以更直接地回答你的问题 – DVG 2012-07-05 20:09:30

回答

0

你需要l ook在this指南的一部分,并确保你有has_many通过场地和事件之间的关系在这里链接中解释...

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 relationshuip

+0

没有理由说,学校belongs_to事件和地点是确保我可以互相利用数据,主要是由于我的经验不足。问题是我想让学校成为其活动和场地之间的统一体。而对于场地中的数据,比如addy,则会出现在shool的事件中。我想了解我可以如何进一步深入。 – sam452 2012-07-05 20:17:50

+0

Thx。我已经改变了学校。rb to has_many:场地,:through =>:events。我不确定如何在控制器中使用venue_for_event,以及它将如何显示在事件#show中?遵循导轨指南(physician.patients =患者),我尝试过:school.events = events但是失败了。我想知道语言如何与模型/控制器/视图相互作用,并且难以理解基础知识。 – sam452 2012-07-05 20:46:37