我不假装开始理解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似乎表明它是可能的但海报没有解释实施情况。
答案 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"
如果有其他人遇到此问题。