我有性病是這樣的:如何將STI類重新分配給模型方法中的變量?
class Post
end
class Post::Confirmed < Post
end
class Post::Draft < Post
def confirm!
becomes Post::Confirmed
end
end
...# somewhere in controller
# POST /posts/1/confirm
# POST /posts/1/confirm.json
def confirm
@post = Post::Draft.first
@post = @post.confirm! # this is the only way I can reload @post with Post::Confrmed
end
是它在某種程度上可能使:
@post.confirm! # I want this @post(Post::Draft) to become Post::Confirmed without reassigning
還是僅僅也不回報率呢?
在此先感謝!
你確定STI在這種情況下是否合適?不會有簡單的狀態標誌和一些範圍更有意義嗎? – 2014-10-02 21:21:10
我雖然這樣做,但範圍有點大,然後在這個例子中:所有的子類作爲給定類的命名空間,所以草案有自己的方法和確認的職位 - 他們自己的。 我想我可能是錯的。但是,STI看起來仍然很完美。 – IlyaDoroshin 2014-10-02 21:21:46
@ muistooshort想象一下,你有購物車。它在結構上與訂單相同:它有物品,總價格等,但每個類的方法都不同。 – IlyaDoroshin 2014-10-02 21:25:19