2013-11-22 2 views
2

Есть ли способ изменить название колонки id в модели?Ruby on Rails: создание идентификатора в столбце как псевдоним?

Если у меня есть что-то вроде этого:

pg_search_scope :good_search, :against => [:first_name, :last_name, :id] 

я хотел бы изменить :id, as: :somethingelse поэтому, когда я проверить мои ценности JSon, вместо id, я буду ссылаться на somethingelse в цикле:

<% @example.each do |e| %> 
    <%= e.somethingelse %> #instead of e.id 
<% end %> 

Возможно ли это?

ответ

0

Попробуйте alias_attribute

class ModelClass < Activerecord::Base 
    alias_attribute :somethingelse, :id 
end 

rails documentation

+0

Я пытался делать это, и меняя свой 'pg_search_scope' с': somethingelse' в нем вместо ': id', но потом я получаю сообщение об ошибке:' PG :: UndefinedColumn: ERROR: column model.somethingelse не существует' – hellomello

+0

рельсовая документация ясно показывает, что она должна Работа. Что такое SQL-запрос? Работает ли она при использовании за пределами именованной области, например 'Model.first.somethingelse'? – Litmus

+0

Это работает, почему это, когда я пытался помещать ': somethingelse' в' pg_search_scope: good_search,: против => [: first_name,: last_name,: somethingelse] ', есть проблема. Есть ли еще один способ сделать это? – hellomello

0

Ну, если я правильно понимаю, что вы хотите somethingelse вернуться и id?

Почему бы не использовать что-то подобное в вашем @ example.class модели:

def somethingelse 
    id 
end 

Или, если у вас уже есть база данных с колонкой, которая называется по-разному

set_primary_key :somethingelse #in you model 
Смежные вопросы