Вопрос: Rails - Есть ли способ обновить один атрибут?


Мне просто интересно, у меня есть модель, которая, помимо id из других моделей (FK), имеет один атрибут boolean, Я хочу знать, как создать кнопку, которая изменит это boolean и только это

Моя модель, о которой идет речь, такова:

class Squad
 belongs_to :player
 belongs_to :team
end

Я хочу создать кнопку на team#show , чтобы player который владеет этим team может изменить boolean из squad, Как я могу это сделать и как будут выглядеть мои контроллеры?

Благодаря :)!

-Редактировать-

Я использую ссылку:

<%=link_to("Change status", squad_path(sqd, :status => true), :method => :put, :confirm => "Sure?")%>

где sqd является частью моего запроса. Неправильно ли эта ссылка?


7


источник


Ответы:


<%= link_to("Change status", squad_path(sqd, "squad[status]" => true), :method => :put, :confirm => "Sure?") %>

в вашем контроллере (это довольно часто)

def update
  @squad = Squad.find params[:id]
  if @squad.update_attributes params[:squad]
    ...
  end
end

12



Да, есть. Этот метод называется «update_attribute». Он принимает два аргумента, имя поля и значение.

  squad.update_attribute(:boolean_field,true) # or false

На основе обновленного вопроса

def update
  @squad = Squad.find(params[:id])
  if @squad.update_attribute(:status,params[:status])
    ...
  end
end

3



Каково название ваших атрибутов?

Поскольку он принадлежит player, вы можете получить к нему доступ player.squad.name_of_your_attributes = new_value, Не забывайте save ваш объект, если вы хотите, чтобы изменения сохранялись в вашей БД.

Кроме того, вы можете прочитать что

EDIT: fl00r ответил на ваш отредактированный вопрос, не нужно, чтобы я повторил то, что он написал.


0