开发者

Cannot get data from related models in Rails

开发者 https://www.devze.com 2023-01-28 02:50 出处:网络
I have 2 models in different namespace. class Admin::Membership < ActiveRecord::Base has_many :authorization_roles

I have 2 models in different namespace.

class Admin::Membership < ActiveRecord::Base
  has_many :authorization_roles
end


class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership
end

The Membership model is in different folder with AuthorizationRole model (I don't know what is called)

When run Admin::Membership.find(:all), the data from AuthorizationRole model is not included. I've create membership_id field on authorization_roles table, but I still can't get both models related.开发者_运维问答 Is something wrong in this code? Sorry if I'm missing something basic here.


Try this

class Admin::Membership < ActiveRecord::Base
  has_many :authorization_roles, :class_name => '::AuthorizationRole'
end


class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership, :class_name => 'Admin::Membership'
end


I've never used namespaced models and I don't think you need to... but maybe you'll have to specify the class name in AuthorizationRole, something like:

belongs_to :membership, :class_name => 'Admin::Membership'

UPDATE:

Assuming you have:

class Membership < ActiveRecord::Base
  has_many :authorization_roles
end

class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership
end

You have added an integer column called membership_id to authorization_roles and you've run the migrations. Now you should be able to create authorization_roles like this @membership.authorization_roles.create( ... ) and fetch them @membership.authorization_roles


Check to see if you are setting the table name prefix. The Rails model generator adds a file like this for namespaced models:

# /app/models/admin.rb
module Admin
  def self.table_name_prefix
    'admin_'
  end
end

Note: this is Rails version 3.0.1 -- not sure about earlier versions.

0

精彩评论

暂无评论...
验证码 换一张
取 消