通过自我指导,我可以获得一个很好的东西

时间:2013-11-21 20:54:48

标签: ruby-on-rails ruby-on-rails-3 rails-i18n

我不假装开始理解i18n并且不必经常使用它,但这是概念。

我的用户类:

class User < ActiveRecord::Base
   has_many :parent_relationships, class_name: 'UserRelationship', foreign_key: 'parent_id'
   has_many :user_relationships, class_name: 'UserRelationship', foreign_key: 'user_id'
   has_many :dealers, through: :parent_relationships
   has_one  :agent, through: :user_relationships
   ...
end

我的UserRelationships类:

class UserRelationship < ActiveRecord::Base
   attr_accessible :end_date, :parent_id, :start_date, :user_id

   belongs_to :agent, class_name:'User',conditions:["user_type='Agent' AND id=?",:parent_id]
   belongs_to :dealer, class_name:'User',conditions:["user_type='Dealer' AND id=?",:user_id]
end

我希望User.model_name.human返回“User”,但是当引用代理关联时,我希望它返回“Agent”。

我尝试了一些没有任何成功的事情,并且在这里发布的内容不太有用,因为它们只是在黑暗中刺伤。所以我的问题是2折。这是可能的,如果是这样,有人可以解释实现,所以我对i18n有了更好的理解。

我这样做的原因是我有一个搜索用户的搜索表单,但我也想让它搜索代理作为一个选择组,现在它输出2个用户选择组This github issue似乎表明它是可能的但海报没有解释实施情况。

1 个答案:

答案 0 :(得分:0)

我已经认识到ransack在translate.rb第53行使用它自己的名称空间进行关联

 defaults = key.blank? ? [:"#{context.klass.i18n_scope}.models.#{context.klass.model_name.singular}"] : [:"ransack.associations.#{context.klass.model_name.singular}.#{key}"] 

所以i18n翻译将是:

 ransack:
  associations:
    user:
      agent: "Agent"

如果有其他人遇到此问题。