Ruby 初心者スレッド Part 67 (729レス)
上下前次1-新
211: (ワッチョイ db33-l/cN) 2021/06/24(木)09:32 ID:+4IsK47J0(1/2) AAS
>>210
大量の処理を関数にして分離。
あるいは、しょせん理想でしかないので、離れていても気にしない。
212: (ワッチョイ a75f-5d62) 2021/06/24(木)10:36 ID:5MDZvZ/d0(1) AAS
>>210
close漏れを警戒するのであれば、openにそのままブロックを渡した方がいい
openはブロックの実行結果を返し、ブロック脱出時に勝手にcloseします
まぁ、どうせclose漏れしてもそのうちGCに回収されるかプロセス終了時にcloseされる
213: (ワッチョイ 5a01-QZnr) 2021/06/24(木)11:01 ID:PG/lAwcj0(2/2) AAS
>>210
yield使った実装とやることは同じ
f= open file
begin
大量の処理を含むメソッド f # <― yieldがメソッドに変わるだけ
ensure
f.close
end
同じだからこそ毎回同じことを書かなくてもいいようblock付きで呼び出す
open(file){|f| 大量の処理を含むメソッド f}
214(1): (アウアウウー Sa47-565v) 2021/06/24(木)12:31 ID:9bIzV4XCa(1) AAS
大量の処理を手続きオブジェクトに分離するのは、やりました。
やっぱりそれしかないかな。
ブロック付きで渡すのはオブジェクト指向ではない
コードになりやすく、今回は考えてないです。
また、全体をensureで囲うのは、
さすがにensure対象が暗黙的すぎてちょっとな・・・です。
215: (ワッチョイ db33-l/cN) 2021/06/24(木)13:25 ID:+4IsK47J0(2/2) AAS
>>214
> ブロック付きで渡すのはオブジェクト指向ではない
> コードになりやすく
そうか?
まあ、「オブジェクト指向」にもいろいろあるからな。w
216(1): (ワッチョイ 0d01-++Tn) 2021/07/17(土)09:58 ID:yHV+uNLK0(1) AAS
railsにおいて あるフォームから特定の変数に送られるデータの内容を固定したいのですがなにかいい方法ありますか?
具体的には
<%= form_with model: @hoge do |form|%>
<%= form.text_field :name , value: 'hoge'%>
<%= form.submit %>
<% end %>
と書かれている場合 hogeというモデルのnameという変数に必ずhogeが入るようにしたいのですが上の書き方だと初期値にhogeが入るだけで編集可能になってしまいます。
217(1): (ワッチョイ 552c-0PSu) 2021/07/17(土)10:48 ID:xmQE+uIu0(1/5) AAS
openに、ブロックを渡す方法は、
コンテキスト・マネージャーという、多くの言語で使われているデザインパターン
これよりも良いものは作れないから、皆が使っている
218: (ワッチョイ 552c-0PSu) 2021/07/17(土)10:54 ID:xmQE+uIu0(2/5) AAS
そりゃ、フォームはサーバーへ送られて更新されるものだから、
変更可能のフィールドが普通
変更不可のフィールドにするなら、
そのフィールドをサーバーへ送らないようにしないといけない
そういうオプションがあるのかな?
219: 218 (ワッチョイ 552c-0PSu) 2021/07/17(土)11:08 ID:xmQE+uIu0(3/5) AAS
「html disabled readonly」で検索!
HTML の <input> 要素には disabled と readonly 属性が存在します
disabled : コントロールが無効化され、フォームを Submit しても、値の送信が行われない
readonly : 値の変更は行えないが、コントロールは有効なので、
フォームを Submit すれば値の送信が行われる
220: 218 (ワッチョイ 552c-0PSu) 2021/07/17(土)11:15 ID:xmQE+uIu0(4/5) AAS
変更不可のフィールドなら、
<input> 要素などを使わずに、単にテキストを表示すれば?
221(1): (ワッチョイ 615f-SRm2) 2021/07/17(土)13:56 ID:EBHVYdQH0(1) AAS
>>216
hidden_field使ってもいいけど
そもそもformによる入力=webからの入力は信頼してはいけない
222(2): (ワッチョイ 9dbb-yayT) 2021/07/17(土)14:27 ID:7kNL/q5q0(1) AAS
>>221
ではどうすればいいでしょうか
223: (ワッチョイ da33-FmTf) 2021/07/17(土)16:20 ID:CYR4F+Ue0(1) AAS
>>222
直にソースで書くしか!
ちなみに、XSRFも調べとくとええんちゃう?
224: 218 (ワッチョイ 552c-0PSu) 2021/07/17(土)20:48 ID:xmQE+uIu0(5/5) AAS
マスアサインメント脆弱性を、strong parameters で防ぐ。
更新できる列を、permit で限定する。
これは、コントローラーでの制限
params.require(:person).permit(:name, :age)
Action Controller の概要
外部リンク[html]:railsguides.jp
モデルでのバリデは、
Active Record バリデーション
外部リンク[html]:railsguides.jp
省3
225: (ワッチョイ 9dbb-yayT) 2021/07/18(日)01:26 ID:M+6J3Mfd0(1) AAS
>>217
ブロックで書くとテストコードが書きづらくないですか?
最近はテストコードのことを考えて、普通に、
file = open(file,'r')
とか書いてます。
あと、ブロックはネストするからなあ。
226: (ワッチョイ 615f-SRm2) 2021/07/18(日)15:19 ID:WDHzAXg40(1) AAS
>>222
何がしたいのか次第
'hoge'で固定するのであればformで入力させる必要はないですし
なんらかの方法で生成するのであれば生成するタイミングを考えます
入力フォーム表示前に生成し固定する必要があるのであれば
ActiveSupport::MessageVerifier
ActiveSupport::MessageEncrypter
session
などを使う
227(1): 218 (ワッチョイ 552c-NvNM) 2021/07/18(日)22:44 ID:H/NN8O820(1) AAS
Rails の便乗質問するけど、
ユーザーの入力値により、条件判断して、
条件1 の場合には、列A だけを更新して、
条件2 の場合には、列B だけを更新する
と言うのは、どのように書くの?
モデルのcallback かな?
228: (ワッチョイ 467c-Wyld) 2021/07/19(月)01:48 ID:0iu7guVA0(1) AAS
ruby silver試験は公式問題集をやれば
合格できますでしょうか、学習時間も参考にさせていただきたいです。
silverを考えています。
バージョンがかなり古いとは思いますが、今のrubyとそんなに変わらないと思ってて大丈夫でしょうか
229: 218 (ワッチョイ 552c-NvNM) 2021/07/19(月)07:03 ID:sO73HNBd0(1) AAS
Ruby の資格は、漏れも取っていない。
下のマネーフォワードの本で、良いと思う
改訂2版 Ruby逆引きハンドブック、2018
230: (ワッチョイ b101-E0YB) 2021/07/20(火)08:12 ID:EkYsR0Mj0(1) AAS
【A型の人ごめん】「まじめ人間」は、自分の人生を生きられず、しかもお金持ちになれない。
動画リンク[YouTube]
【人生観変わる話】「サラリーマン脳」のヤバい特徴5選。
動画リンク[YouTube]
【人生終了】情弱がハマる「貧困スパイラル」のリアル。
動画リンク[YouTube]
バカでもわかる!ネットビジネスの始め方。
動画リンク[YouTube]
時給労働から卒業しよう!貧乏人が知らない「お金の稼ぎ方」まとめ。
動画リンク[YouTube]
省4
上下前次1-新書関写板覧索設栞歴
あと 499 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s