Немного не понимаю как реализовать следующую вещь. Знатоки, поясните, пожалуйста.
Есть две таблицы - users и relationships. Пользователи могут друг друга добавлять и удалять (грубо говоря, т.к. функционал немного не на то направлен), в общем, создавать связи.
При создании связи используется код:
<%= form_for current_user.relationships.build(:allowed_id => @user.id),
:remote => false do |f| %>
<div><%= f.hidden_field :allowed_id %></div>
<div class="actions">
<%= f.submit "Добавить" %>
</div>
<% end %>
При удалении связи используется код:
<%= form_for current_user.relationships.find_by_allowed_id(@user),
:html => { :method => :delete },
:remote => false do |f| %>
<div class="actions">
<%= f.submit "Удалить" %>
<% end %>
</div>
<% end %>
Таким образом первый код вызывает метод create:
def create
@user = User.find(params[:relationship][:allowed_id])
current_user.allow!(@user)
respond_with @user
end
Второй код вызывает метод destroy
def destroy
@user = Relationship.find(params[:id]).allowed
current_user.disallow!(@user)
respond_with @user
end
Не могу понять, как изменить вторую форму так, чтобы она приводила не к удалению записи из БД, а к изменению одного из столбцов таблицы (:freeze => true) для этой записи.
Примечание:
Со сменой аттрибута :freeze разобрался, его не там надо было задавать.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.