У меня есть проекты, и пользователи присоединились через has_many: через модель соединения, называемую владельцем.У каждого владельца есть атрибут owner_type, к которому я хочу получить доступ.
Я хочу иметь способ передать user_id в модель проекта и получить owner_type через модель соединения владения.И наоборот, я хочу передать project_id пользовательской модели и получить owner_type через модель присоединения владения.Вот что у меня есть:
class Project < ActiveRecord::Base
attr_accessible :name, :description
has_many :ownerships
has_many :users, :through => :ownerships
validates :name, :presence => true,
:length => { :maximum => 50 }
def owner_type?(user_id)
@user_id = user_id
@ownership = self.ownerships.where(:user_id => @user_id)
@ownership.owner_type
end
end
class User < ActiveRecord::Base
attr_accessible :name, :email, :admin
has_many :ownerships
has_many :projects, :through => :ownerships
accepts_nested_attributes_for :projects
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :name, :presence => true,
:length => { :maximum => 50 }
#validates :email, :presence => true,
# :format => { :with => email_regex },
# :uniqueness => { :case_sensitive => false }
validates_inclusion_of :admin, :in => [true, false]
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["user_info"]["name"]
user.admin = false
end
end
end
class Ownership < ActiveRecord::Base
attr_accessible :owner_type
belongs_to :project
belongs_to :user
validates :user_id, :presence => true
validates :project_id, :presence => true
validates :owner_type, :presence => true
end
, а затем в моем проекте # show page:
<%= @project.owner_type?(current_user.id) %>
что я делаю не так?Как я могу получить доступ к атрибуту owner_type из модели собственности из любого места?Это никогда не работает.