攝影師「have_many」客戶。有沒有更好的方式來獲取這些數據?
客戶端「have_many」事件。
如果用戶是攝影師,是否有更好的方法在這裏分配@events?
def index
if @current_user.photographer?
@events = []
@current_user.clients.each do |client|
@events << client.events
end
else
@events = @current_user.events
end
end
編輯:更多的代碼
# user.rb
class User < ActiveRecord::Base
has_many :client_associations,
:foreign_key => 'photographer_id',
:class_name => 'Association',
:dependent => :destroy
has_many :clients, :through => :client_associations
has_one :photographer_association,
:foreign_key => 'client_id',
:class_name => 'Association',
:dependent => :destroy
has_one :photographer, :through => :photographer_association
has_many :events
def photographer?
self.role == 'photographer'
end
end
# association.rb
class Association < ActiveRecord::Base
belongs_to :client, :class_name => "User"
belongs_to :photographer, :class_name => "User"
end
# event.rb
class Event < ActiveRecord::Base
belongs_to :user
has_many :images
end
正如你可以看到我的用戶都在一個叫做「角色」字段中的一個典範。
可能值得注意的是'.map(&:events)'因爲這個原因而工作:http://invisibleblocks.wordpress.com/2008/03/28/ruby-facets-symbolto_proc-classto_proc/ – 2009-09-14 19:21:24