タグ付けされた質問 「ruby-on-rails」

Ruby on Railsは、Rubyで記述されたオープンソースのフルスタックWebアプリケーションフレームワークです。これは、人気のあるMVCフレームワークモデルに準拠しており、アプリケーション開発への「構成上の規約」アプローチで知られています。

4
Rails:dependent =>:destroy VS:dependent =>:delete_all
レールガイドでは次のように説明されています: オブジェクトは、に関連付けられている場合はさらに破棄:dependent => :destroyされ、に関連付けられている場合は削除されます:dependent => :delete_all そうですね。しかし、破壊されることと削除されることの違いは何ですか?私は両方を試しました、そしてそれは同じことをするようです。

18
execJs:「JavaScriptランタイムが見つかりませんでした」がexecjsとtherubyracerがGemfileにあります
私はこのエラーを受け取ります: 熊手は打ち切られました!JavaScriptランタイムが見つかりませんでした。https://github.com/sstephenson/execjsを参照してください。 私はすでにグーグルを検索するのにより多くの時間を費やしてきました、そして私は認めたいと思っています。これはexecJのバグだと思います。 すべての投稿から、これはRails 3.1で非常に一般的な問題です。jsランタイムは、今やcoffee-scriptやsassのような標準的なgemで必要とされています。 これらのケースのほとんどは、「execjs」と「therubyracer」というgemをアプリのGemfileに追加してから、「バンドル更新」または「バンドルインストール」を実行することで解決されました。私のためではない。 ラッキーだったと思います。Redhat Linux 4の古いバージョン(2.6.9-101.ELsmp)でrails 3.1.3 / ruby​​ 1.9を実行していますが、gccは3.4.6です。 他の報告された修正は役に立たず、「nodejs」、「johnson」、または「mustang」をインストールできません。他のランタイムexecJが検索して使用することになっています。彼らは私のシステムに作成/インストールしません。 execJが 'therubyracer'を見つけられない問題を修正する必要があります。これがGemfileです(バンドルのインストールでOKと表示されます)。 source 'http://rubygems.org' gem 'rails', '3.1.3' gem 'sqlite3' gem 'sho-mongrel' gem 'execjs' gem 'therubyracer' #gem "therubyracer", :require => 'v8' group :assets do gem 'sass-rails', '~> 3.1.5' gem 'coffee-rails', '~> 3.1.1' gem 'uglifier', '>= 1.0.3' end …

9
ハッシュキーを別のキーに置き換える方法
ハッシュを取得する条件があります hash = {"_id"=>"4de7140772f8be03da000018", .....} そして私はこのハッシュを hash = {"id"=>"4de7140772f8be03da000018", ......} PS:ハッシュのキーが何なのかわからない、それらはランダムであり、すべてのキーに「_」プレフィックスが付いており、アンダースコアは必要ない


4
Railsの移行:列のデフォルト設定を元に戻す
次の例のように、列のデフォルト設定をセットアップするマイグレーションがRailsにあるという問題があります。 def self.up add_column :column_name, :bought_at, :datetime, :default => Time.now end 後のマイグレーションでそのデフォルト設定をドロップしたい場合、railsマイグレーションを使用してどうすればよいですか? 私の現在の回避策は、次のように、rails移行でカスタムSQLコマンドを実行することです。 def self.up execute 'alter table column_name alter bought_at drop default' end しかし、私はこのアプローチが好きではありません。これは、基になるデータベースがこのコマンドを解釈する方法に依存しているためです。データベースが変更された場合、このクエリはおそらく機能しなくなり、移行は中断されます。では、レールの列のデフォルト設定の取り消しを表現する方法はありますか?


19
Ruby on RailsとRakeの問題:初期化されていない定数Rake :: DSL
本当にイライラする問題があります。Rakeは馬鹿げています。 問題が発生する方法は次のとおりです。 $ rails new test_app $ rails generate scaffold new_scaffold field1:string field2:text どちらも問題なく動作しますが、これを実行すると、 $ rake db:migrate 次のエラーが表示されます。 (in /home/mikhail/test_app) rake aborted! uninitialized constant Rake::DSL /usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top …

7
Rails移行でnull可能列をnull不可に変更するにはどうすればよいですか?
以前の移行で日付列を作成し、それをnull可能に設定しました。これをnullにできないように変更したいと思います。そのデータベースにnull行があると仮定して、これを行うにはどうすればよいですか?それらが現在nullの場合、これらの列をTime.nowに設定しても問題ありません。

7
Ruby On Railsで前のページにリダイレクトする方法は?
並べ替え可能なヘッダーとページネーションがあるすべてのプロジェクトを一覧表示するページがあります。 path: /projects?order=asc&page=3&sort=code プロジェクトの1つを編集することを選択します path: projects/436/edit そのページで[保存]をクリックすると、プロジェクトのコントローラー/更新メソッドが呼び出されます。コードを更新した後、特定のプロジェクトをクリックして編集する前にいたパスにリダイレクトします。つまり、同じ並べ替えで同じページを表示したいのです。 link_to(:back)を見て、:backがredirect_to(:back)で機能するかもしれないと思っていましたが、それは大丈夫です。 puts YAML::dump(:back) yields the following: :back これを機能させる方法に関するアイデア。簡単に解決できる問題のようですが、RoRは初めてです。

5
Rails has_many with alias name
私のユーザーモデルでは、次のことが可能です。 has_many :tasks そして私のタスクモデルでは: belongs_to :user 次に、外部キー「user_id」がタスクテーブルに格納されているとすると、次のように使用できます。 @user.tasks 私の質問は、ユーザーのタスクを次のように参照できるように、has_many関係をどのように宣言するかです。 @user.jobs ...または... @user.foobars ヒープに感謝します。

14
AWS S3:アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります
AWS-SDK-Core Ruby Gemでアップロードした画像ファイルを削除しようとしています。 私は次のコードを持っています: require 'aws-sdk-core' def pull_picture(picture) Aws.config = { :access_key_id => ENV["AWS_ACCESS_KEY_ID"], :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"], :region => 'us-west-2' } s3 = Aws::S3::Client.new test = s3.get_object( :bucket => ENV["AWS_S3_BUCKET"], :key => picture.image_url.split('/')[-2], ) end ただし、次のエラーが発生します。 アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要があります。今後のすべてのリクエストをこのエンドポイントに送信してください。 リージョンをに変更するとus-east-1、次のエラーが表示されるため、リージョンが正しいことがわかります。 指定されたキーは存在しません。 ここで何が悪いのですか?

7
Railsプロダクションではconfig.assets.compile = trueですが、なぜですか?
デフォルトではではインストールアプリRailsのrails new持つconfig.assets.compile = false生産を。 そして、物事を行う通常の方法はrake assets:precompile、アプリをデプロイする前に実行して、すべてのアセットパイプラインアセットが確実にコンパイルされるようにすることです。 ではconfig.assets.compile = true、本番環境に設定するとどうなりますか? precompileもう走る必要はない。私が信じるのは、アセットが初めてリクエストされたときに、コンパイルされることです。これは初めてのパフォーマンスヒットになります(これを行うには、通常、運用環境でjsランタイムが必要です)。しかし、これらの欠点を除いて、アセットがレイジーコンパイルされた後は、そのアセットへの以降のすべてのアクセスでパフォーマンスヒットは発生しないと思います。アプリのパフォーマンスは、この最初のヒットレイジーコンパイル後のプリコンパイル済みアセットとまったく同じになります。これは本当ですか? 何か足りないものはありますか?config.assets.compile = true本番環境に設定しないその他の理由はありますか?本番環境でJSランタイムを使用していて、実行する必要がない代わりに、アセットへの最初のアクセスでパフォーマンスが低下するというトレードオフを受け入れる意思がある場合precompile、これは理にかなっていますか?


5
Ruby on Railsでセッターメソッドをオーバーライドする正しい方法は何ですか?
Ruby on Rails 3.2.2を使用していますが、次の方法がmyクラス属性のセッターメソッドをオーバーライドする「適切な」/「正しい」/「確実な」方法であるかどうかを知りたいです。 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self[:attribute_name] = value end 上記のコードは期待どおりに動作するようです。しかし、上記のコードを使用することで、将来的に問題が発生するかどうか、少なくとも、Ruby on Railsで「予想されるはずの問題」/「発生する可能性のある問題」について知りたいと思います。それがセッターメソッドをオーバーライドする正しい方法でない場合、正しい方法は何ですか? 注:コードを使用する場合 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self.attribute_name = value end 次のエラーが発生します。 SystemStackError (stack level too deep): actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70

16
libv8のインストールエラー:エラー:gemネイティブ拡張のビルドに失敗しました
私はレールプロジェクトを作りました、 rails new test_bootstrap. 成功した。 プロジェクトディレクトリに移動して宝石を追加しました gem "therubyracer" gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS gem "twitter-bootstrap-rails" そして走る bundle install その後、私はこのエラーがあります。 Installing libv8 (3.16.14.3) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb creating Makefile 지정된 경로를 찾을 수 없습니다. 지정된 경로를 찾을 …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.