問題タブ [rails-models]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1478 参照

ruby-on-rails - モデルの検証時の重複エラー メッセージ

ruby on rails アプリケーションでモデル検証エラー メッセージが重複する可能性があるのはどうしてですか?

0 投票する
4 に答える
3351 参照

ruby-on-rails - Rails のモデルのインスタンスは 1 つだけ

私は最初の Rails アプリに取り組んでいます。すべてのページに表示される単一の広告に関する情報を保存する必要があります。管理者は、URL、タイトル、および画像を設定できる必要があります。もちろん、この広告オブジェクトのインスタンスは 1 つだけ必要です。

ActiveRecod::Base から継承するモデルを作成しましたが、データベース テーブルに複数の広告を保存するように構成されているため、これは間違っているように思えます。

これを行うための最良の方法は何ですか? モデルとコントローラーはどのように見えるべきですか?

前もってありがとう、アヴィ

0 投票する
3 に答える
7625 参照

ruby-on-rails - 同じモデルの has_one と has_many。レールはそれらをどのように追跡しますか?

正常に機能していても、これがどのように機能するかについて少し混乱しました。同じ他のモデルに 2 つの関連付けを持つモデルがあります。

会社には所有者がいて、会社にはクラス ユーザーの多くの従業員がいます。

ここに私の会社のモデルがあります:

ここに私のユーザーモデルがあります:

今、私はこの会社の所有者を含む3人の従業員を持っていると仮定します. 最初に会社を作成するとき、所有者を ID 1 の従業員に設定し、他の 2 人 (2,3) は company_id (user.company=company) を設定することによって従業員リストに追加されます。3 つすべての company_id は、1 であると想定できる会社 ID に設定されています。

company.owner を要求すると適切なユーザーが取得され、company.employee を実行すると 3 つすべてが取得されます。

所有者をユーザー 2 に変更すると、company_id を nil に設定して、ユーザー 1 を従業員から自動的に削除します。これは問題ありません。単純な従業員として彼を追加しても、すべて問題ありません。

レールはどれがどれであるかをどうやって知っているのですか? つまり、従業員が単なる従業員ではなく所有者であることをどのように知るのでしょうか? これを定義するスキーマはありません。

所有者の関連付けを逆にして、会社をユーザーに属するようにする必要があると感じています。

0 投票する
1 に答える
69 参照

sql - 古いアプリから新しいアプリへの再定義された SQL データのインポート

Symfony (マウントに少し悪い趣味を残した) アプリケーションを Rails に書き直す (いくつかの新機能を追加して) ほぼ完了しました。古いアプリケーションから新しい Rails アプリにインポートする必要があるデータがいくらかあります。

問題は、スキーマが大幅に変更され、一部の外部キー値を更新する必要があることです。

データの再定義インポートに役立つアプリケーションがあるかどうか疑問に思っていますか、それともphpMyAdminを開いてデータベースの編集に時間を費やし、準備されたデータベースでRailsを実行する必要がありますか? (私の意見では、これは仕事をするための最良の方法ではありません)

0 投票する
3 に答える
57099 参照

ruby-on-rails - Rails has_one:関連付けを通じて

Railsにはhas_one :through、2番目のモデルを通過することにより、3番目のモデルとの1対1の関連付けを設定するのに役立つ関連付けがあります。ショートカットの関連付けを作成する以外に、それを実際に使用する方法は何ですか。

Railsガイドからこの例を取り上げます。

次のようなことができるかもしれません:

そうでなければ、次のように到達します。

アクセスが簡単な場合は、技術的には、モデルをn-1モデルを経由するn番目のモデルに接続してアクセスを容易にする1対1の関連付けが存在する可能性があります。ショートカット以外に欠けているものはありますか?

0 投票する
2 に答える
1794 参照

ruby-on-rails - Ruby On Rails - オブジェクト メソッドの呼び出し元を取得する方法

私の問題を説明しましょう:

私は2つのモデルを持っています:

User のインスタンスを @user として持つと、is_contact? を確認できます。このような:

これは完全に機能します。私の問題は、is_contact? 内の @user の属性にアクセスしたいということです。お問い合わせの方法。

これは可能ですか?

皆さんに感謝します。

0 投票する
2 に答える
312 参照

ruby - アイテムとアイテムの関係のためのRailsモデルの関連付け?

このシナリオを実装するための最良の方法に関するガイダンスを探しています。

(製品の)アイテムテーブルがあり、アイテムのクロスセル/アップセル/補完機能をサポートしたいと考えています。したがって、ここにはアイテム間の関係があります。この結合テーブルには、アイテム間のsales_relationなどのキー以外の追加の属性(たとえば、cross、up、complement、substituteなど)を含める必要があります。

モデルの関連付けを設定するにはどうすればよいですか?

0 投票する
6 に答える
12099 参照

html - Rails では、Tasks アプリの Status フィールドをどのように実装すればよいですか? 整数または列挙型ですか?

Rails 3.0 Todo アプリの場合、 Statusフィールドを持つ Tasks モデルがあります。Status フィールド データ (フィールド タイプ) を保存し、ビュー (HTML テーブル) に人間が読めるバージョンを表示する最良の方法は何ですか? ステータスは次のとおりです。

0 = 通常
1 = アクティブ
2 = 完了

今私はこれを持っています:

Rails スキーマは次のとおりです。

create_table "タスク", :force => true do |t|
t.integer "ステータス", :limit => 1, :default => 0, :null => false

Railsモデルはこちら:

Railsビューはこちら:

要件

  1. 値を簡単にローカライズできるように、タスクのステータスをデータベースに保存します。つまり、「通常」、「アクティブ」、「完了」を文字列フィールドとして保存するかどうかわかりません。

  2. ソリューションは Rails 3.0 で動作する必要があります。

質問:

  1. フィールドを整数として保存する必要がありますか (上記を参照)。もしそうなら、RailsビューのHTMLテーブルに人間が読める正しいステータスを表示するにはどうすればよいですか。たとえば、HTMLテーブルに「1」ではなく「Active」を表示します。

  2. 列挙型を使用する必要がありますか? もしそうなら、これは後で簡単にローカライズできますか?

  3. 「Normal」、「Active」、「Completed」などのストレート文字列を使用する必要がありますか

  4. これを機能させるためのビュー ヘルパー、コントローラー、またはビュー コードの簡単なコード サンプルを提供できますか?

0 投票する
2 に答える
244 参照

ruby-on-rails - モデルが間違ったタイミングで検証を実行するのはなぜですか?

私のedit行動では、employees_controller次のコード行があります。

Address編集erbファイルに表示されるように、空白がない場合は空白を追加する必要があります。そうすれば、この従業員に関連付けられているアドレスがなかった場合、このレコードを編集するときにアドレスを追加する必要があります。

このような多対多の関連があります:Person <- User <- Employeeそしてと多Person対多の関係がありAddressます。その宣言は次のようになります。

コードは次の70行目で失敗しますemployees_controller.rb

その呼び出しに注意してくださいsave?なぜこれをしているのですか?

0 投票する
5 に答える
356 参照

ruby-on-rails - ruby モデルにデフォルト属性を設定する方法

モデルがあり、モデルUserを作成するときに、いくつかの API キーを実用的にセットアップしたいと思います。具体的には次のとおりです。
@user.apikey = Digest::MD5.hexdigest(BCrypt::Password.create("jibberish").to_s)

User.create!(:email=>"something@test.com")実行して、ランダムに生成された API キーとシークレットを使用してユーザーを作成できるようにしたいと考えています。

現在、コントローラーでこれを行っていますが、デフォルトのユーザーをファイルに追加しようとするとseeds.rb、SQL エラーが発生します (apikey が null であると言っています)。

定義をオーバーライドしようとしsaveましたが、値をオーバーライドするため、モデルを更新すると問題が発生するようでした。定義をオーバーライドしようとしましinitializeたが、それは a を返し、nil:NilClass物事を壊しています。

これを行うより良い方法はありますか?