回答編集履歴

1

追記

2021/03/17 23:14

投稿

neko_daisuki
neko_daisuki

スコア2090

test CHANGED
@@ -35,3 +35,87 @@
35
35
  uploader.store!(params[:post][:image])
36
36
 
37
37
  ```
38
+
39
+
40
+
41
+ **追記**
42
+
43
+
44
+
45
+ 上記の方法だと version を指定した場合、その保存時に @base_id を参照できず、
46
+
47
+ sotre_dir をたとえば "uploads/#{@base_no}/" とすると、uploads に保存されてしまいました。
48
+
49
+ 参照できないのは version ごとにクラスを生成しているからのようでした。
50
+
51
+
52
+
53
+ carrierwave (2.1.0)
54
+
55
+
56
+
57
+ クラス変数を使う
58
+
59
+ ```
60
+
61
+ class ImageUploader < CarrierWave::Uploader::Base
62
+
63
+ def base_no=(base_no)
64
+
65
+ @@base_no = base_no
66
+
67
+ end
68
+
69
+
70
+
71
+ def store_dir
72
+
73
+ "uploads/#{@@base_no}"
74
+
75
+ end
76
+
77
+ end
78
+
79
+
80
+
81
+ uploader = ImageUploader.new
82
+
83
+ uploader.base_no = @city.base_no
84
+
85
+ uploader.store!(params[:post][:image])
86
+
87
+ ```
88
+
89
+
90
+
91
+ または、クラスインスタンス変数で
92
+
93
+ ```
94
+
95
+ class ImageUploader < CarrierWave::Uploader::Base
96
+
97
+ class << self
98
+
99
+ attr_accessor :base_no
100
+
101
+ end
102
+
103
+
104
+
105
+ def store_dir
106
+
107
+ "uploads/#{ImageUploader.base_no}"
108
+
109
+ end
110
+
111
+ end
112
+
113
+
114
+
115
+ uploader = ImageUploader.new
116
+
117
+ ImageUploader.base_no = @city.base_no
118
+
119
+ uploader.store!(params[:post][:image])
120
+
121
+ ```