簡體   English   中英

Rails形式-復選框,FK和日期時間->如何將這些屬性存儲在數據庫中?

[英]rails form - checkboxes, FK and datetime -> how to store those attributes in the db?

(導軌2.2.2)

我有2個模型,用戶和訂閱。 每個用戶可以擁有一個或多個訂閱(=高級服務)。 在屬性下方:

  • 用戶:ID,用戶名,...
  • 訂閱:id,user_id(FK),類型,started_at,ended_at

這些課程:

class User < ActiveRecord::Base
  ..
  has_many :subscriptions, :dependent => :destroy
  ..
end

class Subscription < ActiveRecord::Base
  belongs_to :user, :foreign_key => :user_id
end

現在,我要制作UI部分,現有用戶可以在其帳戶中訂閱高級服務。 因此,我想制作第一個簡單版本,用戶可以通過單擊復選框進行訂閱。 這就是我到目前為止所得到的

<div class = 'wrapper'>
  <%= render :partial => "my_account_leftbar" %>

  <% form_for @subscription, :url => subscribe_user_path(current_user) do |f| %>
  <div class="field">
    <%= (f.check_box :type?) %>      <!-- add '?'after the symbol, source: https://github.com/justinfrench/formtastic/issues/269 -->
  </div>

  <div class="actions">
    <%= f.submit "Subscribe", :class => "button mr8" %>
  </div>
  <% end %>
</div>

問題:

  1. 該應用程序將一條記錄插入db中,但尚未設置我以(類型)形式定義的屬性(應將其設置為“ 1”,代表“標准訂閱”)。 如何讓應用設置此屬性?
  2. 如何設置FK? 我認為滑軌應該自動設置FK,這種假設正確嗎?
  3. 如何設置其他值“ started_at”和“ ended_at”? 這些是datetime(timestamp)值...

剛用完我的初學者Rails知識,任何幫助都非常感激...

“類型”是ruby on rails保留字,僅在使用“單表繼承”時才應使用。 您應該將列名重命名為其他名稱。

我也可以解決其他問題2和3,將其包裝起來:

  1. 插入記錄:如Wahaj的回答所述,將“類型”列重命名為“ subscription_type”,這很有幫助。 我創建了一個單獨的遷移,如下所述: 如何在Ruby on Rails遷移中重命名數據庫列?

  2. 存儲FK:在控制器中更新了動作。 不只是寫作

    @subscription = Subscription.new(params [:subscription])

    我編寫了以下方法來創建“用戶的訂閱”

    @subscription = current_user.subscriptions.build(params [:subscription])

  3. 存儲“ started_at”:向控制器添加了一個方法:

    @ subscription.update_attributes(:started_at => Time.zone.now)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM