Я хочу получить доступ к столбцу из таблицы соединений в частичном. Когда я обращаюсь к этому столбцу в «нормальном» представлении (например, в fakeposts # index), он работает, однако, если я хочу сделать то же самое в частичном, это не сработает.Rails: не удается получить доступ к столбцу из таблицы соединений в частичном
Пример:
У меня есть пользователи и таблица fakeposts. Для каждого пользователя, я хочу, чтобы отобразить fakeposts в определенном (рандомизированные) порядка, а именно - на основе столбца randomized_time -, который сохраняется в соединительной таблице:
randomized_posts стол:
user_id | fakepost_id | randomized_time
Мои Модели выглядеть следующим образом:
#user.rb
has_many :randomized_fakeposts
#fakepost.rb
has_many :randomized_fakeposts
# randomized_fakepost.rb
belongs_to :fakepost
belongs_to :user
в моем fakepost_controller.rb я хочу, чтобы получить fakeposts для CURRENT_USER и добавить колонку «randomized_time» в мой выбор:
Мой fakepost_controller.rb
def index
@fakeposts = Fakepost.joins(:randomized_fakeposts).where(randomized_fakeposts: {user_id: current_user.id}).select("fakeposts.*, randomized_fakeposts.randomized_time")
end
Это работает: index.html.erb
<% @fakeposts.each do |post| %>
<%= post.randomized_time %>
<% end %>
Это не работает: index.html.erb и моя частичная
#index.html.erb
<% @fakeposts.each do |post| %>
<%= render :partial => "layouts/individual-post", :locals => {:post => post} %>
<% end %>
#layouts/_individual-post.html.erb
<%= post.randomized_time %>
Сообщение об ошибке
=> undefined method `randomized_time' for #<Fakepost:0x007f7752eeab58>
Однако, что-то вроде <% = post.created_at%> работает нормально в моей частичной, так что я думаю, как я называю мой парциальное правильно?
Похоже, у вас есть опечатка 'Fakepost.joins (randomized_fakeposts)' должен быть 'Fakepost.joins (: randomized_fakeposts)' –
Ах, спасибо :), я исправил опечатку (так как в моем коде это правильно) , – OhDaeSu
Точно такой же метод работает в консоли рельсов? – angkiki